#include <stdio.h>
#include <stdlib.h>

int devide(int* s,int len,int sum) {
    int left=0,right=0,min=sum;
    for(int i=0;i<len-1;i++) {
        left+=s[i];
        right=sum-left;
        min=min<abs(left-right) ? min : abs(left-right);
    }
    return min;
}
int main() {
    int n,m;
    scanf("%d %d",&n,&m);
    int arr[n][m];
    int row[n],sum=0; //数组存储每一行的和，输入的时候顺便计算了
    for(int i=0;i<n;i++) {
        row[i]=0;
        for(int j=0;j<m;j++) {
            scanf("%d",&arr[i][j]);
            row[i]+=arr[i][j];
        }
        sum+=row[i];
    }
    int col[m]; 
    for(int j=0;j<m;j++) {
        col[j]=0;
        for(int i=0;i<n;i++) {
            col[j]+=arr[i][j];
        }
    }
    int row_min=devide(row,n,sum);
    int col_min=devide(col,m,sum);
    printf("%d\n",(row_min<col_min) ? row_min : col_min);
    return 0;
}